package me.softwareengineer.guice.rendering.domain.search;

import java.util.List;

import me.softwareengineer.guice.rendering.domain.Element;

/**
 * Element filter declares the general structure of filter of elements. Usually,
 * each element in a list will be asked to provided filtered version of the
 * block. Thus, the final output can be: 1- An empty list if the element should
 * be removed. 2- An element itself when no filter operation occurred. 3- list
 * of new element to be replaced the provided element.
 * 
 * @author yadtahir
 * 
 */
public interface ElementFilter {

	/**
	 * Filters the given element and returns the filtered version of the
	 * element.
	 * 
	 * @param element
	 * @return the filtered version of the element.
	 */
	public List<Element> filter(Element element);

}
